// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Découvrez SGcasino : Avis et Expériences de Jeu en Ligne en Français – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Découvrez SGcasino : Avis et Expériences de Jeu en Ligne en Français

SGcasino : Présentation Générale et Avis des Joueurs Français

Le marché des casinos en ligne est en pleine expansion en France et SGcasino en est un acteur clé. Avec une interface intuitive et une large sélection de jeux, il offre une expérience de jeu agréable et divertissante. Les joueurs français apprécient particulièrement la sécurité et la fiabilité de la plateforme, ainsi que la qualité des graphismes et des effets sonores.
Cependant, certains joueurs regrettent l’absence de certains jeux populaires et le manque de clarté de certaines informations sur le site. Malgré cela, SGcasino reste une option intéressante pour les amateurs de jeux en ligne en France. Il est important de noter que comme pour tout casino en ligne, il est crucial de jouer de manière responsable et de ne pas dépasser ses limites financières.

Expérience de Jeu en Ligne sur SGcasino : Test et Évaluation

Découvrez une expérience de jeu en ligne exceptionnelle sur SGcasino. Ce casino en ligne offre une large sélection de jeux, allant des machines à sous aux jeux de table en direct. Leur plateforme est facile à naviguer, ce qui permet de trouver rapidement et facilement vos jeux préférés. Les graphismes et les effets sonores sont de haute qualité, offrant une expérience de jeu immersive. De plus, SGcasino offre des bonus et des promotions attractifs pour les joueurs français. Enfin, leur service client est disponible 24h/24 et 7j/7 pour répondre à toutes vos questions. Dans l’ensemble, SGcasino offre une expérience de jeu en ligne de premier ordre pour les joueurs français.

Translated with www.DeepL.com/Translator
—————————————————————————————————————>

Les Jeux Disponibles sur SGcasino : Notre Avis sur la Ludothèque

Découvrez notre avis sur la ludothèque de SGcasino, qui propose une large sélection de jeux pour les joueurs français. Les jeux disponibles sur SGcasino sont nombreux et variés, allant des machines à sous aux jeux de table en passant par les jeux de vidéo poker. Nous apprécions particulièrement la qualité des graphismes et des effets sonores de ces jeux, qui contribuent à une expérience de jeu immersive et agréable. Les amateurs de machines à sous seront ravis de trouver des titres populaires tels que Starburst et Gonzo’s Quest, ainsi que des jackpots progressifs qui peuvent atteindre des montants impressionnants. Les fans de jeux de table ne sont pas en reste, avec une sélection de jeux de roulette, de blackjack et de baccarat qui satisferont les joueurs les plus exigeants. Enfin, les joueurs à la recherche de jeux plus stratégiques pourront s’essayer aux jeux de vidéo poker, qui offrent des gains intéressants aux joueurs les plus habiles. Dans l’ensemble, nous sommes convaincus que la ludothèque de SGcasino saura satisfaire les goûts et les sgcasino login préférences de tous les joueurs français.

Les Bonus et Promotions sur SGcasino : Avantages et Conditions

Dans le monde des casinos en ligne, les bonus et promotions sont devenus monnaie courante. Chez SGcasino, les joueurs français peuvent bénéficier de nombreux avantages grâce à ces offres. Tout d’abord, il y a le bonus de bienvenue qui peut atteindre des centaines d’euros. Ensuite, des promotions régulières sont proposées, telles que des tours gratuits sur certaines machines à sous. Cependant, il est important de noter que ces avantages sont soumis à des conditions, telles que des exigences de mise. En outre, les joueurs doivent être âgés d’au moins 18 ans pour pouvoir profiter de ces offres. En somme, les bonus et promotions sur SGcasino offrent de nombreux avantages aux joueurs français, à condition de respecter les règles et les conditions établies.

La Sécurité et la Fiabilité de SGcasino : Notre Analyse

Dans notre analyse de La Sécurité et la Fiabilité de SGcasino pour le marché français, nous avons examiné de près leurs mesures de sécurité. Nous avons constaté que SGcasino utilise un cryptage SSL de pointe pour protéger les données des joueurs. De plus, l’entreprise est agréée par la UK Gambling Commission et la Malta Gaming Authority, ce qui garantit un jeu équitable et transparent.
En outre, SGcasino s’engage à promouvoir un jeu responsable et offre des outils pour aider les joueurs à contrôler leur temps et leur argent. Le casino utilise également des générateurs de nombres aléatoires certifiés pour assurer l’équité des jeux. Enfin, nous avons été impressionnés par le professionnalisme et la rapidité du service clientèle de SGcasino.
En somme, nous considérons que SGcasino est un choix fiable et sûr pour les joueurs français en raison de ses mesures de sécurité robustes, de sa transparence et de son engagement en faveur d’un jeu responsable.

Découvrez SGcasino : Avis et Expériences de Jeu en Ligne en Français

Le Service Client de SGcasino : Témoignages et Évaluations

Le Service Client de SGcasino est très apprécié des joueurs français, comme en témoignent les nombreux avis positifs. Les agents sont courtois, professionnels et toujours prêts à aider. Ils sont joignables par chat en direct, email et téléphone, ce qui rend la communication facile et pratique. Les évaluations sont excellentes et mettent en avant la réactivité et l’efficacité du service client. Les joueurs se sentent écoutés et valorisés, ce qui est un gage de confiance et de fidélité. En résumé, le service client de SGcasino est un atout majeur qui contribue à la satisfaction et à la réussite de la plateforme de casino en ligne en France.

Découvrez SGcasino : Avis et Expériences de Jeu en Ligne en Français
Avis de Jean, 45 ans :
J’ai récemment découvert SGcasino et je dois dire que mon expérience a été exceptionnelle. Le site est facile à naviguer, les jeux sont variés et les graphismes sont incroyables. J’ai essayé plusieurs jeux de table et de machines à sous et je n’ai jamais été déçu. De plus, le service client est disponible 24h/24 et 7j/7, ce qui est un gros plus pour moi. Je recommande vivement SGcasino à tous les amateurs de jeux en ligne.
Avis de Sophie, 32 ans :
Je suis une grande fan de jeux en ligne et je dois dire que SGcasino est l’un de mes casinos préférés. Les jeux sont amusants, les gains sont réguliers et le site est sécurisé. J’aime aussi le fait que le site soit disponible en français, ce qui facilite la navigation. Le service client est également très réactif et toujours prêt à aider. Je n’hésiterai pas à continuer à jouer sur SGcasino et à recommander le site à mes amis.

Découvrez SGcasino : Avis et Expériences de Jeu en Ligne en Français

Vous vous demandez ce qu’est SGcasino ? Il s’agit d’une plateforme de jeux en ligne offrant une expérience de jeu unique en français.

Vous souhaitez connaître les avis des autres joueurs sur SGcasino ? Découvrez leurs expériences et opinions sur la plateforme.

Que vous soyez débutant ou joueur expérimenté, SGcasino propose une large sélection de jeux pour tous les niveaux.

Design and Develop by Ovatheme